package com.tiancheng.trade.order.bo;

import jakarta.validation.constraints.NotEmpty;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * 主订单业务对象
 *
 * @author kellen
 * @date 2024/3/3
 */
@Getter
@Setter
public class OrderBO {

    // 主订单号
    private String orderId;
    // 源订单号（续单、尾款单）
    private String originalOrderId;
    // 用户id
    private String uid;
    // 用户手机号
    private String mobile;
    // 支付渠道用户标识
    private String openid;
    // 业务渠道来源
    private String orderSource;
    // 订单名称
    private String orderName;
    // 订单应收总金额
    private Integer orderAmount;
    // 结算信息
    private String settlementInfo;
    // 交易信息
    private String tradeInfo;
    // 下单时间
    private LocalDateTime createTime;
    // 支付超时时间
    private LocalDateTime payExpiryTime;
    // appId
    private String appId;
    // ip
    private String ip;
    // 是否有优惠
    private Integer isCoupon;
    // 优惠总金额
    private Integer discount;
    // 平台优惠金额
    private Integer platformDiscount;
    // 订单类型
    private String orderType;
    // 是否测试订单
    private Integer isTest;
    // 下单场景
    private String orderScene;
    // 支付渠道
    private String payChannel;
    // 主商户编号
    private String merchantCode;
    // 主商户名称
    private String merchantName;
    // 推广码
    private String generalizeCode;
    // 微信优惠信息
    private String goodsTag;
    /**
     * 系统来源
     * @see com.cloud.trade.order.enums.SystemSourceEnum
     */

    private String systemSource;
    /**
     * 业务类型
     * @see com.cloud.trade.order.enums.BusinessTypeEnum
     */
    private String businessType;
    /**
     * 订单渠道，订单来源渠道，广告、线上等等。只用于统计，可自定义
     */
    private String orderChannel;
    /**
     * 订单批次号
     */
    private String batchId;
    /**
     * 订单消息通知地址
     */
    @NotEmpty(message = "订单消息通知地址不允许为空")
    private String notifyUrl;
    /**
     * 业务终端号
     */
    private String termNo;
}
